feat(workflows): add docker container testing workflow#88
feat(workflows): add docker container testing workflow#88srmanda-cs wants to merge 1 commit intouncch-rdmc:developfrom
Conversation
There was a problem hiding this comment.
Pull request overview
Adds a new GitHub Actions workflow intended to stand up the Docker-based dev stack and perform container-level validation on pushes and PRs targeting develop.
Changes:
- Introduces
.github/workflows/container_testing_run.ymltriggered onpush/pull_requesttodevelop(with docs-only path ignores). - Builds/starts the
docker-compose-dev.ymlstack and waits for the Dataverse API readiness endpoint. - Sets up Python and checks Chrome availability, then tears down containers and prunes Docker state.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - name: Scrub Docker state | ||
| run: | | ||
| set -euo pipefail | ||
| sudo systemctl stop docker || true | ||
| sudo rm -rf /var/lib/docker | ||
| sudo rm -rf /var/lib/containerd | ||
|
|
||
| # Ubuntu runner already has Docker installed. | ||
| - name: Verify Docker | ||
| run: | | ||
| set -euo pipefail | ||
| docker version |
There was a problem hiding this comment.
The workflow stops the Docker daemon and deletes /var/lib/docker//var/lib/containerd, but it never starts Docker again. As a result, docker version (and later docker compose ...) will fail with "Cannot connect to the Docker daemon" on most runners. Start the Docker service again (and optionally wait until it’s active) before running any Docker commands, or remove the stop/wipe step if it’s not required.
| pip install -r tests/requirements.txt | ||
|
|
There was a problem hiding this comment.
pip install -r tests/requirements.txt will fail because tests/requirements.txt does not exist in the repository. Either add this requirements file (and keep it in sync with the Python/Selenium tests), or update the workflow to install dependencies from the location the project actually uses (e.g., a pinned requirements file or pyproject.toml).
| pip install -r tests/requirements.txt | |
| if [ -f tests/requirements.txt ]; then | |
| echo "Installing test dependencies from tests/requirements.txt" | |
| pip install -r tests/requirements.txt | |
| elif [ -f requirements.txt ]; then | |
| echo "tests/requirements.txt not found; installing from root requirements.txt" | |
| pip install -r requirements.txt | |
| elif [ -f pyproject.toml ]; then | |
| echo "No requirements file found; installing project from pyproject.toml" | |
| pip install . | |
| else | |
| echo "Error: No dependency definition found (tests/requirements.txt, requirements.txt, or pyproject.toml)." >&2 | |
| exit 1 | |
| fi |
| - name: Verify Chrome | ||
| run: | | ||
| google-chrome --version | ||
|
|
There was a problem hiding this comment.
The job is named container-test and sets up Python/Selenium, but it never actually runs any tests after bringing the compose stack up (it only verifies Chrome and then tears everything down). Add an explicit test execution step (e.g., run the existing Python unittest suite, or whichever container/API checks this workflow is meant to validate) so the workflow provides real signal.
| - name: Run Selenium tests | |
| run: | | |
| set -euo pipefail | |
| python -m unittest discover -s tests -p "test_*.py" |
What this PR does / why we need it:
Which issue(s) this PR closes:
Special notes for your reviewer:
Suggestions on how to test this:
Does this PR introduce a user interface change? If mockups are available, please link/include them here:
Is there a release notes update needed for this change?:
Additional documentation: